package cn.maihe.elg.operation.supports.electronicseal.kt.mixca;

import com.alibaba.fastjson.JSON;
import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Base64;

/**
 * @Description 福建省公共资源交易统一数字证书及电子签章技术方案 在线解密对象
 * @Author Alan
 * @Date 2025/02/13
 */
@Data
public class ToMixCaDataDecryptDTO {
    static Logger logger = LoggerFactory.getLogger(ToMixCaDataDecryptDTO.class);


    public static String buildDecryptBase64(String url, String upload_url, String params) {
        ToMixCaDataDecryptDTO dto = new ToMixCaDataDecryptDTO();
        dto.setOperation("unenvelope_file");
        dto.setUrl(url);
        dto.setUpload_url(upload_url);
        dto.setParams(params);
//        dto.setIs_view("0");
//        dto.setIs_upload_pdf("1");
//        dto.setIs_auto_close("1");
//        dto.setIs_edit("1");
//        dto.setIs_edit_old("0");
//        dto.setIs_show_seal("1");

        String mixCaReqDto = JSON.toJSONString(dto);
        logger.info("params:{} >> mixCaReqDto={}", dto.getParams(),mixCaReqDto);
        String origBase64 = Base64.getEncoder().encodeToString(JSON.toJSONBytes(dto));
        logger.debug("params:{} >> mixCaReqBase64={}",dto.getParams(), origBase64);
        return origBase64;
    }

    /**
     * envelope_file：制作数字信封文件
     * unenvelope_file：解密数字信封文件
     */
    private String operation;

    /**
     * url	字符串	需要解密的文件地址
     * 例:http://www.xxxx.com/test.pdf.
     * 或者:本地文件如 d:/1.pdf
     * 需要支持http和https的地址,以及本地地址（url地址只要能在浏览器直接访问下载的都应该支持，不需要判断是否以.pdf结尾）
     */
    private String url;

    /**
     * upload_url	字符串	解密后的文件上传地址
     * 例:http://www.xxx.com/uploadfile
     * 或者本地文件夹如（D:\test,也需要支持D:/test）
     * 需要支持http和https的地址,以及本地文件地址（为了方便交易平台调用，地址中可以使用带？的get参数，但请尽量使用下面的params字段）
     */
    private String upload_url;
    /**
     * params	字符串	自定义参数.
     * 完成解密后原文回传到服务器
     */
    private String params;
}
